/**
    坐标系
        为了表示地球的椭球体, 就出现了不同的坐标系.我国常用WGS84,北京54,西安80坐标系
        WGS84使用的是WGS1984椭球体,北京54用的是克拉索夫斯基椭球体
    投影
        为了把椭球面描绘到平面上,使用几何透视法或数学分析法,将地球上的点和线投影到可展的曲面,再将曲面展成平面,建立该平面点/线和地球椭球面上点线的关系. openlayer使用墨卡托投影
        openlayer支持两种投影: EPSG: 4326, EPSG: 3857(默认)
 */

const { MultiLineString } = require("ol/geom")


//事件监听, 点击事件监听, 根据特征进行下一步
map.on('click', (ev) => {
    let pixel = ev.pixel
    let feature = _this.map.forEachFeatureAtPixel(pixel, (ft) => {
        return ft
    })
    //feature 就是拿到的特征
})

//样式修改后,可以用 changed 立即刷新地图
feature.changed()  

//添加点
featurePoint = new Feature([经度,纬度])
source = new VectorSource()
source.addFeature([点1feature, 点2feature, ...])
layer = new VectorLayer()
layer.setSource(source)
map.addLayer(layer)

//添加线条, 类似添加点
featureLine = new Feature({           // 多线添加
    geometry: new MultiLineString([
        [ 头点[经度, 纬度], 尾点[经度, 纬度] ], 
        ...
    ])
})
featureLine = new Feature({           // 单线添加
    geometry: new LineString([ 头点[经度, 纬度], 尾点[经度, 纬度] ])
})
source.addFeature(featureLine)

//添加叠加层, overlay
let overlay = new Overlay({
    element: DOM节点,
})
overlay.setPosition( 数组[经度,纬度] ) // 设置叠加层打开时的位置
map.addOverlay(overlay)               //加入叠加层

//  转换平面经纬度到椭球面经纬度
[椭球经度, 椭球纬度] === formLonLat([平面经度, 平面纬度])